perm filename BITS.FAI[4,KMC] blob sn#177276 filedate 1975-09-17 generic text, type T, neo UTF8
	TITLE	BITS

ICH ← 1
OCH ← 2
MODE ← 10
IBYTSZ ← 7				;THESE MAY BE SET INDEPENDENTLY
OBYTSZ ← 7				;TO ANYTHING FROM 1 TO 44 OCTAL
A ← 1
B ← 2

	.INSERT	IODEFS.FAI[SEC,RCP]	;INSERT DOESN'T WORK IN MACRO

IBUF:	BLOCK	3
OBUF:	BLOCK	3
IFILE:	SIXBIT	/TEST/			;SHOULD GET FILE FROM TTY
	SIXBIT	/IN/
	0
	0
OFILE:	SIXBIT	/TEST/
	SIXBIT	/OUT/
	0
	0

TABLE:	BLOCK	1⊗IBYTSZ

START:	INIT	ICH,MODE
	SIXBIT	/DSK/
	XWD	0,IBUF
	JRST	BOMB
	MOVE	A,[POINT IBYTSZ,0,35]
	MOVEM	A,IBUF+1
	LOOKUP	ICH,IFILE
	JRST	BOMB

	INIT	OCH,MODE
	SIXBIT	/DSK/
	XWD	OBUF,0
	JRST	BOMB
	MOVE	A,[POINT OBYTSZ,0,35]
	MOVEM	A,OBUF+1
	ENTER	OCH,OFILE
	JRST	BOMB

	MOVEI	A,1⊗IBYTSZ-1		;IDENTITY MAPPING
ILOOP:	MOVEM	A,TABLE(A)
	SOJGE	A,ILOOP
	JRST	CLOOP

;---------NON-STANDARD TABLE GOES HERE
;SHOULD MAKE TYPICAL CONVERSIONS EASY OPTIONS
	MOVEI	A,37			;CONTROL TO PRINTING
	MOVEI	B,137
CTLOOP:	MOVEM	B,TABLE(A)
	SOJ	B,
	SOJGE	A,CTLOOP

	MOVEI	A,37			;LOWER TO UPPER
	MOVEI	B,137
SHLOOP:	MOVEM	B,TABLE+140(A)
	SOJ	B,
	SOJGE	A,SHLOOP

CLOOP:	SOSG	IBUF+2
	JRST	GETBUF
GETCHR:
	ILDB	A,IBUF+1
	MOVE	A,TABLE(A)		;GET CONVERSION
	JUMPE	A,CLOOP			;DELETE NULLS
	SOSG	OBUF+2
	JRST	PUTBUF
PUTCHR:
	IDPB	A,OBUF+1
	JRST	CLOOP

GETBUF:	OUTSTR	[ASCIZ /GETBUF
/]					;PROVIDES A PROGRESS REPORT
	IN	ICH,0
	JRST	GETCHR
	RELEAS	ICH,
	RELEAS	OCH,
	JRST	DONE

PUTBUF:	OUTSTR	[ASCIZ /	PUTBUF
/]
	OUT	OCH,0
	JRST	PUTCHR
	JRST	BOMB

	END	START